<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 운세 통합 컨트롤러
 */
class Unse extends CI_Controller {
	
	var $data = array();
	
	function __construct() {
		parent::__construct();
		$this->data['sess_userinfo'] = $this->session->userdata('userinfo');

		$this->load->model('unse/Unse_model', 'model');
	}
	
	/**
	 * URI를 가지고 어떤 운세서비스를 호출하는지 판단해준다.
	 * 사용자가 이용가능권한이 있는지 체크한다. (폼에서 한번, 결과에서 한번 더한다.)
	 */
	function _remap() {
		log_message('debug', "@@@@ Unse::_remap()");

		// 파라미터 값으로 서비스 구분
		$cate1  = $this->uri->segment(2);
		$cate2  = $this->uri->segment(3);
		$method = $this->uri->segment(4);	// 운세 폼 or 결과
		
		log_message('debug', "@@ cate1=$cate1");
		log_message('debug', "@@ cate2=$cate2");
		log_message('debug', "@@ method=$method");
		
		$this->cate1  = $cate1;
		$this->cate2  = $cate2;
		$this->method = $method;
		$this->service_id = $cate1.'_'.$cate2;
		$this->data['service_id'] = $this->service_id;

		// 메인일 경우 나머지 처리는 생략
		if (empty($cate2) || $cate2 == 'main') {
			$this->main($cate1);
			return;
		}

		//---------------------------------------------------------
		// 폼으로 갈지 결과로 갈지 선택
		//---------------------------------------------------------
		
		// 스타운세의 경우 특수하다.
		if ($cate1 == 'star') {
			if ($cate2 == 'todaybirth') {
				if ($method == 'main') {
					$this->star_todaybirth_main();
					return;
				} elseif ($method == 'search') {
					$this->star_todaybirth_search();
					return;
				}
			} elseif ($cate2 == 'total' && $method == 'main') {
				$this->star_total_main();
				return;
			}
		}
		
		if ($method == 'form') {
			$this->form();
		} elseif ($method == 'auth_check') {
			$this->auth_check();
		} elseif ($method == 'result') {
			$this->result();
		} else {
			show_404();
		}
	}

	/*****************************************************************************************
	 * 각 운세별 메인 안내페이지
	 *****************************************************************************************/
	function main($cate1) {
		$this->load->view('unse/'.$cate1.'_main_v', $this->data);
	}
	

	/*****************************************************************************************
	 * 운세 폼으로 이동
	 *----------------------------------------------------------------------------------------
	 * 1. 폼에 자동으로 채울 회원사주정보 셋팅
	 * 2. 뷰 페이지 URL 설정
	 *****************************************************************************************/
	function form() {
		log_message('debug', "@@@@ Unse::form()");

		//---------------------------------------------------------
		// 서비스정보와 회원정보를 가져온다.
		//---------------------------------------------------------

		$service = $this->model->get_service($this->service_id);
		log_message('debug', "@@ service_id=".$service['service_id']);
		log_message('debug', "@@ service_name=".$service['service_name']);
		log_message('debug', "@@ package_cd=".$service['package_cd']);
		log_message('debug', "@@ price=".$service['price']);
		$this->data['service_price'] = $service['price'];	// 해당 운세의 가격을 표시하기 위함.
		$this->data['service_id']    = $service['service_id'];
		
		// 회원 정보와 가입상품 정보를 가져온다.
		$member = $this->model->get_member_with_package($this->data['sess_userinfo']['user_id']);
		log_message('debug', "@@ package_cd=".$member['package_cd']);
		log_message('debug', "@@ service_point=".$service['price']);
		log_message('debug', "@@ member_cashpoint=".$member['cashpoint']);


		// 19금 S궁합 미성년자 차단
		if ($this->cate1 == 'adult' && ($this->data['sess_userinfo']['login_yn'] != 'Y') || (date('Y',time())-substr($member['birthdate'],0,4) < 19)) {
			echo "<script type='text/javascript'>";
			echo "	alert('19세 미만은 이용하실 수 없습니다..');";
			echo "	history.back();";
			echo "</script>";
			return;
		}
		
		if ($this->cate1 == 'money') {
			$this->load->model('unse/Money_model', 'money');
			$this->data['job_list'] = $this->money->select_salary2011_job_list();
		}
		
		// 무료운세구분 (무료운세일경우 확인창 없이 그냥 넘어가게 하기 위함)
		$this->data['free_yn'] = 'N';
		if ($service['price'] == 0) {
			$this->data['free_yn'] = 'Y';
		}
		
		
		$this->data['is_tojung']       = FALSE;	// 토정비결인지를 표시 (사주입력폼에서 당해년도를 보이게 하기 위함)
		$this->data['is_myloverstyle'] = FALSE;	// 내 애인은 어떤사람일까인지 여부 (폼 제목을 상대방으로 바꾸기 위함)
		$this->data['is_sung']         = FALSE;	// 테마운세에서 성씨입력의 필요여부

		// 추가적읜 입력칸 선택여부 결정
		if ($service['service_id'] == 'tojung_total') {
			$this->data['is_tojung'] = TRUE;
		} elseif ($service['service_id'] == 'theme_joint' || $service['service_id'] == 'theme_subordinate' || $service['service_id'] == 'theme_boss') {
			$this->data['is_sung'] = TRUE;
		} elseif ($service['service_id'] == 'gunghap_style') {
			$this->data['is_myloverstyle'] = TRUE;
		}
				
		// 폼에 자동으로 채울 회원사주정보 셋팅
		if ($this->data['sess_userinfo']['login_yn'] == 'Y') {
			$member['birth_yyyy'] = substr($member['birthdate'], 0,4);
			$member['birth_mm']   = substr($member['birthdate'], 5,2);
			$member['birth_dd']   = substr($member['birthdate'], 8,2);

			$this->data['user'] = $member;
			
			if ($service['service_id'] == 'gunghap_style') {
				
				// 상대방의 사주를 넣어야 하기때문에 공백처리
				$this->data['user']['user_name']     = '';
				$this->data['user']['sex']           = '';
				$this->data['user']['birth_yyyy']    = '';
				$this->data['user']['birth_mm']      = '';
				$this->data['user']['birth_dd']      = '';
				$this->data['user']['birthtime']     = '';
				$this->data['user']['birth_solunar'] = '';
				$this->data['user']['cl_year']       = '';
			}
			
		} else {
			// 비로거 에러 방지용 Mock Data
			$this->data['user'] = array(
				  'user_id'       => $this->data['sess_userinfo']['user_id']
				, 'user_name'     => ''
				, 'sex'           => ''
				, 'birth_yyyy'    => ''
				, 'birth_mm'      => ''
				, 'birth_dd'      => ''
				, 'birthtime'     => ''
				, 'birth_solunar' => ''
				, 'cl_year'       => ''
			);
		}

		$view_url = 'unse/'.$this->service_id.'_form_v';
		log_message('debug', "@@ Form View URL=".$view_url);

		$this->load->view($view_url, $this->data);
	}

	/*****************************************************************************************
	 * 유/무료 서비스에 따른, 서비스 이용가능 회원인지 확인하고 결제 수단 선택 페이지로 이동시킨다.
	 *----------------------------------------------------------------------------------------
	 * 1. 로그인 확인
	 * 2. 이미 본 운세인지 확인
	 * 3. 결제 가능한지 확인
	 *  (1) VIP 잔여쿠폰 확인
	 *  (2) 캐쉬/포인트 잔액 확인
	 * 4. 결제 수단 선택 페이지로 이동
	 *****************************************************************************************/
	function auth_check() {
		log_message('debug', "@@@@ Unse::auth_check()");

		//---------------------------------------------------------
		// 서비스정보와 회원정보를 가져온다.
		//---------------------------------------------------------

		$service = $this->model->get_service($this->service_id);
		log_message('debug', "@@ service_id=".$service['service_id']);
		log_message('debug', "@@ service_name=".$service['service_name']);
		log_message('debug', "@@ package_cd=".$service['package_cd']);
		log_message('debug', "@@ price=".$service['price']);
		$this->data['service_price'] = $service['price'];	// 해당 운세의 가격을 표시하기 위함.

		// 회원 정보와 가입상품 정보를 가져온다.
		$member = $this->model->get_member_with_package($this->data['sess_userinfo']['user_id']);
		log_message('debug', "@@ package_cd=".$member['package_cd']);
		log_message('debug', "@@ service_point=".$service['price']);
		log_message('debug', "@@ member_cashpoint=".$member['cashpoint']);

		
		//---------------------------------------------------------
		// 1. 로그인 확인
		//---------------------------------------------------------
		if ($this->data['sess_userinfo']['login_yn'] != 'Y') {
			$this->load->view('/confirm/no_login_pop_v', $this->data);
			return;
		}

		//---------------------------------------------------------
		// 2. 이미 본 운세인지 확인
		//---------------------------------------------------------
		// DB에 저장된 파라미터값과 비교하기위해 일단 폼 정보를 가져온다.
		$userinfo['yyyy']           = $this->input->get('target_yyyy', TRUE);
		$userinfo['user_name']      = $this->input->get('user_name', TRUE);
		$userinfo['sex']            = $this->input->get('sex', TRUE);
		$birth_solunar              = $this->input->get('birth_solunar', TRUE);
		$userinfo['solunar']        = substr($birth_solunar,0,1) == 'S' ? 'solar' : 'lunar';	// 양음력
		$userinfo['my_solnuar']     = $userinfo['solunar'];
		$userinfo['request_year']   = $this->input->get('birth_yyyy', TRUE);
		$userinfo['request_month']  = $this->input->get('birth_mm', TRUE);
		$userinfo['request_day']    = $this->input->get('birth_dd', TRUE);
		$userinfo['request_hour']   = $this->input->get('birth_hh', TRUE);
		$userinfo['job']            = $this->input->get('job', TRUE);
		$userinfo['annual_salary']  = $this->input->get('annual_salary', TRUE);
		$userinfo['msung']          = $this->input->get('msung', TRUE);
		$userinfo['ysung']          = $this->input->get('ysung', TRUE);

		// 상대방의 이름이 있으면 궁합이므로 아래 데이터를 가져온다.
		$userinfo['your_user_name'] = $this->input->get('your_name', TRUE);
		if (!empty($userinfo['your_user_name'])) {
			$your_birth_solunar         = $this->input->get('your_birth_solunar', TRUE);
			$userinfo['your_solunar']   = substr($your_birth_solunar,0,1) == 'S' ? 'solar' : 'lunar';	// 양음력
			$userinfo['your_year']      = $this->input->get('your_birth_yyyy', TRUE);
			$userinfo['your_month']     = $this->input->get('your_birth_mm', TRUE);
			$userinfo['your_day']       = $this->input->get('your_birth_dd', TRUE);
			$userinfo['your_hour']      = $this->input->get('your_birth_hh', TRUE);
			$userinfo['your_job']       = $this->input->get('your_job', TRUE);
			$userinfo['your_annual_salary'] = $this->input->get('your_annual_salary', TRUE);
		}

		// 빈 값을 비교하지 않기 위해 빼준다.
		foreach ($userinfo as $key => $value) {
			if (empty($value)) {
				unset($userinfo[$key]);
			}
		}
		
		// 이미 본 운세면 다시보기html을 가져오고 아니면 ''를 가져온다.
		$result_html_url = $this->model->get_result_html_url($this->data['sess_userinfo']['user_id'], $service['service_id'], $userinfo);
		if (!empty($result_html_url)) {
			$this->data['result_html_url'] = $result_html_url;
			$this->load->view('/confirm/already_used_pop_v', $this->data);
			return;
		}
				
		//---------------------------------------------------------
		// 3. 결제 가능한지 확인 (유료 운세일 경우)
		//---------------------------------------------------------
		$this->data['coupon']['service_group_name'] = '';
		$this->data['coupon']['qty'] = '';

		$is_have_coupon = FALSE;	// VIP회원권에 속한 이용권 잔여 여부
		$is_have_ticket = FALSE;	// 개별이용권 잔여 여부
		$is_have_point  = FALSE;	// 캐쉬/포인트 잔여 여부
		
		// $payment_type = '';	// package, point(cash), ticket 가 있음 (이용후 쿠폰이나 포인트 차감할때 구분값으로 사용)
		if ($service['price'] > 0) {

			// 패키지 사용자 일 경우
			if ($member['package_cd'] != PREM_GUEST && $member['package_cd'] != PREM_GENERAL) {
					
				// DB에서 소유한 패키지 이용권 리스트를 가져온다.
				$member_coupon_list = $this->model->select_member_coupon_list($this->data['sess_userinfo']['user_id']);
	
				// 패키지 쿠폰(이용권) 잔여 갯수 체크
				foreach ($member_coupon_list as $item) {
					if ($item['service_group_id'] == $service['service_group_id'] && $item['qty'] > 0 ) {
						$is_have_coupon = TRUE;
						$this->data['coupon']['service_group_name'] = $item['service_group_name'];
						$this->data['coupon']['qty'] = $item['qty'];
					}
				}
			}
			
			// 일반 사용자
			//if ($member['package_cd'] == PREM_GENERAL) {

			// 상품 정보
			$this->data['service_price'] = $service['price'];
			$this->data['service_id']    = $service['service_id'];
			$this->data['service_name']  = $service['service_name'];
			
			// 캐쉬/포인트가 충분한지 체크
			if ($service['price'] <= $member['cashpoint']) {
				$is_have_point = TRUE;
				$this->data['cashpoint'] = $member['cashpoint'];
			}

			// 개별이용권이 있는지 체크
			// DB에서 서비스에 해당되는 소유한 패키지 이용권 리스트를 가져온다.
			$ticket_list = $this->model->select_ticket_list($this->data['sess_userinfo']['user_id'], $service['service_group_id'], $service['service_id']);
			if (count($ticket_list) > 0 ) {
				$is_have_ticket = TRUE;
				$this->data['ticket']['qty'] = count($ticket_list);
				$this->data['ticket']['service_name'] = $service['service_name'];
				$this->data['ticket']['idx'] = $ticket_list[0]['idx'];
			}
		}

		log_message('debug', "@@ is_have_coupon=$is_have_coupon");
		log_message('debug', "@@ is_have_ticket=$is_have_ticket");
		log_message('debug', "@@ is_have_point=$is_have_point");


		//---------------------------------------------------------
		// 4. 결제 수단 선택 페이지로 이동
		//---------------------------------------------------------

		// 경우1: 아무것도 없을 경우 ==> 개별이용권 결제페이지
		if ($is_have_coupon == FALSE && $is_have_ticket == FALSE && $is_have_point == FALSE) {
			// echo '잔여 이용권이 없고 잔여 포인트(캐쉬)도 부족합니다.';
			// 개별이용권 구매 후 다시 결제방법 선택 창으로 돌아가서 구매한 이용권을 선택하도록 한다.
			$return_url = '/unse/'.$this->cate1.'/'.$this->cate2.'/auth_check';
			$this->session->set_userdata('return_url',$return_url);
			$this->load->view('/product/buy_ticket_pop_v', $this->data);
			return;
			// $view = 'confirm/payment_pop_v';
		}
		// 경우2: VIP 회원권의 잔여이용권이 있을 경우 ==> 잔여 및 이용확인 창
		elseif ($is_have_coupon == TRUE) {
			$view = 'confirm/vip_pop_v';
		}	
		// 경우3: 캐쉬/포인트가 충분한 경우 ==> 잔여 및 이용확인 창
		elseif ($is_have_point == TRUE && $is_have_ticket == FALSE) {
			$view = 'confirm/point_pop_v';
		}
		// 경우4: 개별이용권이 있을 경우 ==> 잔여 및 이용확인 창
		elseif ($is_have_ticket == TRUE && $is_have_point == FALSE) {
			$view = 'confirm/ticket_pop_v';
		}
		// 경우5: VIP회원권의 잔여이용권, 캐쉬/포인트, 개별이용권 중 두가지 이상 있을 경우 하나 선택 ==> 선택창
		else {
			$cnt = 0;
			$cnt += $is_have_coupon ? 1 : 0;
			$cnt += $is_have_ticket ? 1 : 0;
			$cnt += $is_have_point  ? 1 : 0;
			if ($cnt >= 2) {
				$view = 'confirm/choice_pop_v';
			}
		}
		
		// 두번 결제 방지
		$this->session->set_flashdata('payment_yn','N');

		// 화면에 뿌려줄 데이터 내용 로그
		log_message('debug', "@@ view data=".print_r($this->data, TRUE));
		
		// 이용확인 창
		log_message('debug', "@@ view page=$view");
		$this->load->view($view, $this->data);
	}

	/*****************************************************************************************
	 * 운세 결과 출력 페이지
	 *----------------------------------------------------------------------------------------
	 * 서비스ID에 따라 어떤 운세 데이터를 가져올지 결정하고 결과를 표시할 뷰를 지정한다.
	 * 
	 * 1. 회원 사주 정보 값 세팅
	 * 2. 운세서버에서 데이터 추출 (JSON)
	 * 3. 포인트 차감
	 * 4. 운세 서비스 이용 내역 저장
	 * 5. 뷰 페이지 URL 설정
	 *****************************************************************************************/
	function result() {
		log_message('debug', "@@@@ Unse::result()");
		
		//---------------------------------------------------------
		// 서비스정보와 회원정보를 새로 가져온다. (최신 데이터로 가져와야 정확하다.)
		//---------------------------------------------------------
		$this->session->unset_userdata('info');
		
		$service = $this->model->get_service($this->service_id);
		log_message('debug', "@@ service_id=".$service['service_id']);
		log_message('debug', "@@ service_name=".$service['service_name']);
		log_message('debug', "@@ package_cd=".$service['package_cd']);
		log_message('debug', "@@ price=".$service['price']);
		$this->data['service_price'] = $service['price'];	// 해당 운세의 가격을 표시하기 위함.

		// 회원 정보와 가입상품 정보를 가져온다.
		$member = $this->model->get_member_with_package($this->data['sess_userinfo']['user_id']);
		log_message('debug', "@@ package_cd=".$member['package_cd']);
		log_message('debug', "@@ service_point=".$service['price']);
		log_message('debug', "@@ member_cashpoint=".$member['cashpoint']);

		
		$payment_type = $this->input->post('payment_type', TRUE);
		
		//------------------------------------------------------------------
		// 파라미터값 셋팅
		//------------------------------------------------------------------

		$userinfo['yyyy']           = '';
		$userinfo['user_id']        = '';
		$userinfo['user_name']      = '';
		$userinfo['sex']            = '';
		$userinfo['solunar']        = '';
		$userinfo['my_solnuar']     = '';
		$userinfo['request_year']   = '';
		$userinfo['request_month']  = '';
		$userinfo['request_day']    = '';
		$userinfo['request_hour']   = '';
		$userinfo['request_min']    = '00';
		$userinfo['youn']           = '';
		$userinfo['job']            = '';
		$userinfo['annual_salary']  = '';
		$userinfo['setDate']        = '';
		$userinfo['your_user_name'] = '';
		$userinfo['your_solunar']   = '';
		$userinfo['your_year']      = '';
		$userinfo['your_month']     = '';
		$userinfo['your_hour']      = '';
		$userinfo['your_day']       = '';
		$userinfo['your_min']       = '00';
		$userinfo['your_job']       = '';
		$userinfo['your_annual_salary'] = '';
		$userinfo['your_youn']      = '';
		$userinfo['cate']           = 'saju';
		$userinfo['sel']            = '1';
		$userinfo['solution_var']   = 'DB';
		$userinfo['url']            = '';
		$userinfo['what']           = '';
		$userinfo['name1']          = '';
		$userinfo['page']           = '';
		$userinfo['msung']          = '';
		$userinfo['ysung']          = '';

		// 여기부터는 기본값으로 셋팅 (의미있는 값이라기 보단 그냥 보내는 값이다.)
		array_push($userinfo, array('radio_10'=>'','radio_14'=>'','intstick2z'=>'','radio_13'=>'','radio_12'=>'','intstick3zz'=>'','radio_11'=>'','intstick1'=>'2','intstick2zz'=>'','radio_18'=>'','intstick2'=>'1','radio_17'=>'','intstick3'=>'0','radio_16'=>'','intstick4'=>'0','radio_15'=>'','intstick5'=>'0','intstick6'=>'1','radio_19'=>'','cyear'=>'','MtMonth'=>'','num_1'=>'','num_2'=>'','intstick1zz'=>'','dream_type'=>'','intstick3z'=>'','hangul_1'=>'','blood'=>'','hangul_5'=>'','hangul_4'=>'','hangul_3'=>'','sasangw'=>'','hangul_2'=>'','jumsa'=>'','tele'=>'','name_5'=>'','name_4'=>'','search_month'=>'','jumin2'=>'','jumin1'=>'','name12_1'=>'','MtYear'=>'','sasangm'=>'','selectday'=>'','showInputNN2'=>'','showInputNN3'=>'','intstick1z'=>'','d'=>'','intstick4zz'=>'','b'=>'','c'=>'','a'=>'','intstick5zz'=>'','bloodm'=>'','bloodw'=>'','intstick6zz'=>'','intstick6z'=>'','search_year'=>'','radio_51'=>'','radio_52'=>'','radio_53'=>'','radio_50'=>'','ref_var'=>'','radio_48'=>'','radio_49'=>'','name_3'=>'','name_2'=>'','name_1'=>'','radio_42'=>'','radio_43'=>'','radio_40'=>'','radio_41'=>'','radio_46'=>'','radio_47'=>'','radio_44'=>'','radio_45'=>'','intstick4z'=>'','showInputFN2'=>'','rd'=>'','radio_37'=>'','cday'=>'','radio_38'=>'','radio_39'=>'','name'=>'','radio_33'=>'','radio_34'=>'','radio_35'=>'','radio_36'=>'','radio_30'=>'','radio_31'=>'','radio_32'=>'','radio_2'=>'','intstick5z'=>'','dsearch'=>'','radio_3'=>'','radio_1'=>'','dream_name'=>'','MtDay'=>'','radio_28'=>'','radio_29'=>'','radio_26'=>'','radio_27'=>'','radio_24'=>'','radio_7'=>'','radio_25'=>'','radio_6'=>'','radio_22'=>'','radio_5'=>'','radio_23'=>'','radio_4'=>'','cmonth'=>'','radio_20'=>'','radio_21'=>'','serial'=>'','radio_8'=>'','radio_9'=>''));

		// 무료운세용 파라미터
		$userinfo['what']           = $this->input->post('what', TRUE);
		$userinfo['name1']          = $this->input->post('name1', TRUE);
		$userinfo['page']           = $this->input->post('page', TRUE);

		// 테마운세 성씨 파라미터 (한자)
		$userinfo['msung']          = $this->input->post('msung', TRUE);
		$userinfo['ysung']          = $this->input->post('ysung', TRUE);
		
		// 나의 사주 정보 셋팅
		$userinfo['yyyy']           = $this->input->post('target_yyyy', TRUE);
		$userinfo['user_id']        = $this->input->post('user_id', TRUE);
		$userinfo['user_name']      = $this->input->post('user_name', TRUE);
		$userinfo['sex']            = $this->input->post('sex', TRUE);
		$birth_solunar              = $this->input->post('birth_solunar', TRUE);
		$userinfo['solunar']        = substr($birth_solunar,0,1) == 'S' ? 'solar' : 'lunar';	// 양음력
		$userinfo['my_solnuar']     = $userinfo['solunar'];
		$userinfo['request_year']   = $this->input->post('birth_yyyy', TRUE);
		$userinfo['request_month']  = $this->input->post('birth_mm', TRUE);
		$userinfo['request_day']    = $this->input->post('birth_dd', TRUE);
		$userinfo['request_hour']   = $this->input->post('birth_hh', TRUE);
//		$userinfo['youn']           = substr($birth_solunar,2,1) == 'C' ? '0' : '1';
		$userinfo['youn']           = '0';	// 1이면 결과 안나온다.
		$userinfo['job']            = $this->input->post('job', TRUE);
		$userinfo['annual_salary']  = $this->input->post('annual_salary', TRUE);
		$userinfo['setDate']        = isset($_REQUEST['setDate']) ? $_REQUEST['setDate'] : $this->input->post('setDate', TRUE);
		if (empty($userinfo['setDate'])) {
			$userinfo['setDate'] = date("Y-m-d",time());	// 오늘날짜
		}
		
		// 상대방 사주 정보 세팅
		$gh_flag = $this->uri->segment(5);
		log_message('debug', "@@ gh_flag=".$gh_flag);
		if ($gh_flag == 'Y') {
			$userinfo['your_user_name'] = $this->input->post('your_name', TRUE);
			$userinfo['your_sex']       = $this->input->post('your_sex', TRUE);
			$your_birth_solunar         = $this->input->post('your_birth_solunar', TRUE);
			$userinfo['your_solunar']   = substr($your_birth_solunar,0,1) == 'S' ? 'solar' : 'lunar';	// 양음력
			$userinfo['your_year']      = $this->input->post('your_birth_yyyy', TRUE);
			$userinfo['your_month']     = $this->input->post('your_birth_mm', TRUE);
			$userinfo['your_day']       = $this->input->post('your_birth_dd', TRUE);
			$userinfo['your_hour']      = $this->input->post('your_birth_hh', TRUE);
			//$userinfo['your_youn']      = substr($your_birth_solunar,2,1) == 'C' ? '0' : '1';
			$userinfo['your_youn']      = '0';	// 1이면 결과 안나온다.
			$userinfo['your_job']       = $this->input->post('your_job', TRUE);
			$userinfo['your_annual_salary'] = $this->input->post('your_annual_salary', TRUE);
		}

		//------------------------------------------------------------------
		// 중복 차감 방지 (이미 결제를 진행 했다면 이용권 차감 과정 패스하고 결과만 보여준다.)
		//------------------------------------------------------------------
		$payment_yn = $this->session->flashdata('payment_yn');
		
		
		//------------------------------------------------------------------
		// 운세 데이터 가져오기 (Json)
		//------------------------------------------------------------------
		
		// 토정비결 일때 월별 운세 가져오기
		if ($service['service_id'] == 'tojung_total') {
			// 지난해, 다음해의 월별운세를 가져온다. (지난해 12월, 다음해 1,2월이 포함되기 때문)
			// 전년
			$userinfo['yyyy'] -= 1;
			$this->data['last_year_month'] = $this->model->make_unse_data($userinfo, 'tojung_month');
			// 다음해
			$userinfo['yyyy'] += 2;
			$this->data['next_year_month'] = $this->model->make_unse_data($userinfo, 'tojung_month');
			// 원상복귀
			$userinfo['yyyy'] -= 1;
		}

		// 신통방통 궁합 상대방의 S027 가져오기
		if ($service['service_id'] == 'gunghap_sintong') {
			$yourinfo = $userinfo;
			$yourinfo['user_name']     = $yourinfo['your_user_name'];
			$yourinfo['sex']           = $yourinfo['sex'] == '남' ? '여' : '남';
			$yourinfo['my_solnuar']    = $yourinfo['your_solunar'];
			$yourinfo['request_year']  = $yourinfo['your_year'];
			$yourinfo['request_month'] = $yourinfo['your_month'];
			$yourinfo['request_day']   = $yourinfo['your_day'];
			$yourinfo['request_hour']  = $yourinfo['your_hour'];
			$yourinfo['request_min']   = $yourinfo['your_min'];
			$yourinfo['youn']          = $yourinfo['your_youn'];
			$this->data['your_S027'] = $this->model->make_unse_data($yourinfo, 'gunghap_sintong_S027');
		}

		// 각 서비스에 해당하는 일반적인 운세
		$this->data['contents'] = $this->model->make_unse_data($userinfo, $service['service_id']);

		// 상대방의 사주명식 값 가져오기
		if ($gh_flag == 'Y') {
			$this->data['your'] = $this->model->make_sajums_data($userinfo);
		}		
		
		// 금전사주이면 연도별 금전운 점수를 계산한다.
		if ($service['service_group_id'] == 'money') {
			
			// 구할 연수
			$max_len = 30;	//30년치
			if ($service['service_id'] == 'money_gunghap') {
				$max_len = 15;	//15년치
			}
			
			$salary_idx    = $this->input->post('job', TRUE);
			$annual_salary = $this->input->post('annual_salary', TRUE);
			$user_age = date('Y',time()) - $userinfo['request_year'] +1;

			$this->load->model('unse/Money_model', 'money');
			$this->data['contents']['graph'] = $this->money->make_money_data($this->data['contents']['S042gu'], $salary_idx, $annual_salary, $user_age, $max_len);
			$this->data['user_age'] = $user_age;
			$this->data['annual_salary'] = $annual_salary;

			if ($service['service_id'] == 'money_gunghap') {
				$your_salary_idx    = $this->input->post('your_job', TRUE);
				$your_annual_salary = $this->input->post('your_annual_salary', TRUE);
				$your_user_age = date('Y',time()) - $userinfo['your_year'] +1;
	
				$this->load->model('unse/Money_model', 'money');
				$this->data['contents']['your_graph'] = $this->money->make_money_data($this->data['contents']['S042gu_you'], $your_salary_idx, $your_annual_salary, $your_user_age, $max_len);
				
				$this->data['your_user_age'] = $your_user_age;
				$this->data['your_annual_salary'] = $your_annual_salary;
			}
		}

		// 같은 운명의 스타 (현재 서비스 안함)
		if ($service['service_id'] == 'star_matching') {
			$this->load->model('unse/Star_model', 'star');
			$arr_table_names = array('T060', 'S081', 'S027');
			foreach ($arr_table_names as $table_name) {
				$this->data['artist_list'][$table_name] = $this->star->select_like_artist_list($table_name, $this->data['contents'][$table_name]['db_express']);
			}
		}

		// 오늘 태어난 스타
		if ($service['service_id'] == 'star_todaybirth') {
			$this->load->model('unse/Star_model', 'star');
			$arr_table_names = array('T060');	// T060=타고난 성향이 같은 스타
			foreach ($arr_table_names as $table_name) {
				$this->data['artist_list'][$table_name] = $this->star->select_like_artist_list($table_name, $this->data['contents'][$table_name]['db_express']);
			}
			$artist_idx = $this->input->post('idx', TRUE);
			$this->data['artist'] = $this->star->get_artist($artist_idx);

			$this->star->insert_update_star_statistics($service['service_id'], $artist_idx);
		}

		// 스타 궁합 결과 점수 저장
		if ($service['service_id'] == 'star_gunghap') {
			$artist_idx = $this->input->post('artist_idx', TRUE);
			$this->load->model('unse/Star_model', 'star');
			$this->star->insert_star_gunghap_ranking($this->data['sess_userinfo']['user_id'], $artist_idx, $this->data['contents']['G023_MS']['numerical']);

			// 중복 카운트 되지 않게 스타운세 통계를 넣는다.
			if ($service['service_id'] == 'star_gunghap' && (!empty($payment_yn) || $payment_yn == 'N')) {
				$this->star->insert_update_star_statistics($service['service_id'], $artist_idx);
			}
		}
		
		// 결과를 제대로 가져오지 못할 경우 에러 메세지 출력하고 종료
		if (empty($this->data['contents'])) {
			die('정상적으로 처리되지 않았습니다.');
		}

		//----------------------------------------------------
		// 화면에 보여줄 데이터 셋팅
		//----------------------------------------------------
		$arr_birthtime_string = array(
			  '0'=>'모름'
			, '01'=>'子 (23:30 ~ 01:29)'
			, '02'=>'丑 (01:30 ~ 03:29)'
			, '04'=>'寅 (03:30 ~ 05:29)'
			, '06'=>'卯 (05:30 ~ 07:29)'
			, '08'=>'辰 (07:30 ~ 09:29)'
			, '10'=>'巳 (09:30 ~ 11:29)'
			, '12'=>'午 (11:30 ~ 13:29)'
			, '14'=>'未 (13:30 ~ 15:29)'
			, '16'=>'申 (15:30 ~ 17:29)'
			, '18'=>'酉 (17:30 ~ 19:29)'
			, '20'=>'戌 (19:30 ~ 21:29)'
			, '22'=>'亥 (21:30 ~ 23:29)'
		);
		
		// 사주에 사용된 데이터를 뿌려줘야 하기때문에 DB에서 불러온 데이터를 사용하지 않는다.
		$this->data['member']['user_name']  = $userinfo['user_name'];
		$this->data['member']['sex']        = $userinfo['sex'];
		$this->data['member']['birth_yyyy'] = $userinfo['request_year'];
		$this->data['member']['birth_mm']   = $userinfo['request_month'];
		$this->data['member']['birth_dd']   = $userinfo['request_day'];
		$this->data['member']['birth_hh']   = $arr_birthtime_string[$userinfo['request_hour']];
		$this->data['member']['solunar']    = $userinfo['solunar'];
		
		if ($gh_flag == 'Y') {
			$this->data['member']['your_user_name']  = $userinfo['your_user_name'];
			$this->data['member']['your_sex']        = $userinfo['your_sex'];
			$this->data['member']['your_birth_yyyy'] = $userinfo['your_year'];
			$this->data['member']['your_birth_mm']   = $userinfo['your_month'];
			$this->data['member']['your_birth_dd']   = $userinfo['your_day'];
			$this->data['member']['your_birth_hh']   = $arr_birthtime_string[$userinfo['your_hour']];
			$this->data['member']['your_solunar']    = $userinfo['your_solunar'];
		}

		//------------------------------------------------------------------
		// 사주명식 영역
		//------------------------------------------------------------------
		// 무료운세는 사주명식을 가져오지 않는다.
		if ($service['service_group_id'] != 'free') {
			if ($gh_flag == 'Y') {
				$this->data['INC_SAJUMS'] = $this->load->view('inc/sajums_couple_v', $this->data, TRUE);
			} else {
				$this->data['INC_SAJUMS'] = $this->load->view('inc/sajums_solo_v', $this->data, TRUE);
			}
		}


		//------------------------------------------------------------------
		// 결과 html 파일 생성 (팝업용)
		//------------------------------------------------------------------
		if ($service['service_group_id'] != 'free') {
			$this->_write_result_html($service);
			log_message('debug', "@@ result_html_url=".$this->data['result_html_url']);
			log_message('debug', "@@ result_html_path=".$this->data['result_html_path']);
			$this->data['service_name'] = $service['service_name'];
		}
		

		//------------------------------------------------------------------
		// 유료운세일 경우 처리할 내용
		//------------------------------------------------------------------
		// 캐쉬/포인트 차감 및 쿠폰 차감 
		// 운세이용내역 기록
		
		// 유료일 경우
		$service_price = 0;
		if ($service['price'] > 0 && (!empty($payment_yn) || $payment_yn == 'N')) {
			// 포인트 결제
			if ($payment_type == 'point') {
				$service_price = $service['price'];

				log_message('debug',"@@ service_price=".$service_price);
				log_message('debug',"@@ member[cash]=".$member['cash']);
				log_message('debug',"@@ member[point]=".$member['point']);

				$cash = 0;	// 차감될 캐쉬
				$point = 0;	// 차감될 포인트
				
				// 캐쉬부터 차감
				if ($member['cash'] >= $service_price) {
					$cash  = $service_price;
				} elseif ($member['cash'] > 0) {
					$cash  = $member['cash'];
					$point = $service_price - $cash;
				} else {
					$point = $service_price;
				}

				$this->model->payment_point($this->data['sess_userinfo']['user_id'], $service['service_id'], $cash, $point, $this->data['result_html_url']);
			}
			// 패키지 쿠폰 결제
			elseif ($payment_type == 'package') {
				$this->model->payment_package($this->data['sess_userinfo']['user_id'], $service['service_group_id'], $service['service_id'], $member['package_cd'], $this->data['result_html_url']);
			}
			// 개별이용권 결제
			elseif ($payment_type == 'ticket') {
				$ticket_idx = $this->input->post('ticket_idx', TRUE);
				log_message('debug', "@@ ticket_idx=$ticket_idx");
				$this->model->payment_ticket($this->data['sess_userinfo']['user_id'], $service['service_group_id'], $service['service_id'], $ticket_idx, $this->data['result_html_url']);
			}
		}

		//--------------------------------------------------------------
		// 운세 결과 페이지 보여주기
		//--------------------------------------------------------------
		$view_url = 'unse/'.$service['service_id'].'_result_v';
		log_message('debug', "@@ Result View URL=".$view_url);
		$this->load->view($view_url, $this->data);
				
	}

	/****************************************************************
	 * 다시보기용 결과 html 페이지 생성
	 ****************************************************************/
	function _write_result_html($service) {
		// 무료운세는 저장하지 않는다.
		if ($service['service_group_id'] != 'free') {
			// 결과 저장 - 팝업으로 운세 결과만 보이게 (프린트,다시보기,sns공유 용)
			$html_view_url = 'unse_result_html/'.$service['service_id'].'_result_pop_v';
			$result_html = $this->load->view($html_view_url, $this->data, TRUE);
			
			// 파일명 생성 (/result_html/년월/아이디_서비스아이디_날짜시간.html)
			$file_name = $this->data['sess_userinfo']['user_id'].'_'.$service['service_id'].'_'.date('YmHGis',time()).'.html';
			$sub_dir_path = "/result_html/".date('Ymd',time());
			$dir_path = ROOT_DIR.$sub_dir_path;
	 
			if(!is_dir($dir_path)){
			   mkdir($dir_path, DIR_WRITE_MODE);
			}
			
			$file = fopen("$dir_path/$file_name","w");
			fwrite($file, $result_html);
			fclose($file);
			
			$this->data['result_html_url'] = ROOT_URL."$sub_dir_path/$file_name";
			$this->data['result_html_path'] = "$sub_dir_path/$file_name";
		}
	}

	/*******************************************************************
	 * 스타운세 메인
	 *******************************************************************/
	function star_total_main() {
		log_message('debug', "@@@@ Unse::star_total_main()");
		
		$target_date = $this->input->get('target_date', TRUE);
		if (empty($target_date)) {
			$target_date = time();
		} elseif (strlen($target_date) == 8) {
			$target_date = date(strtotime(substr($target_date, 0,4).'-'.substr($target_date, 4,2).'-'.substr($target_date, 6,2)));
		} else {
			$target_date = date(strtotime($target_date));
		}

		$yesterday = date('Y-m-d',strtotime("-1 day",$target_date));
		$today     = date('Y-m-d',$target_date);
		$tomorrow  = date('Y-m-d',strtotime("+1 day",$target_date));

		$this->data['yesterday'] = $yesterday;
		$this->data['today']     = $today;
		$this->data['tomorrow']  = $tomorrow;
		
		$this->load->model('unse/Star_model', 'star');
		$this->data['today_artist_list'] = $this->star->select_artist_simple_list($today);

		//----------------------------------
		// 검색 시 처리할 내용
		//----------------------------------
		$search_keyword = $this->input->post('search_keyword', TRUE);
		if (!empty($search_keyword)) {
			$this->data['search_keyword'] = $search_keyword;
			$this->load->model('unse/Star_model', 'star');
			$this->data['artist_list'] = $this->star->select_artist_search_list($search_keyword);
		} else {
			$this->data['search_keyword'] = '';
		}

		$this->load->view('unse/star_total_main_v', $this->data);
	}
	
	/*******************************************************************
	 * 스타운세 : 오늘 태어난 스타 메인
	 *----------------------------------------------------------------------------------------
	 * 스타 운세는 스타 검색이 들어가기때문에 좀 특수하다.
	 *****************************************************************************************/
	function star_todaybirth_main() {
		log_message('debug', "@@@@ Unse::star_todaybirth_main()");

		$this->data['service_price'] = '0';
		
		$target_date = $this->input->get('target_date', TRUE);
		if (empty($target_date)) {
			$target_date = time();
		} elseif (strlen($target_date) == 8) {
			$target_date = date(strtotime(substr($target_date, 0,4).'-'.substr($target_date, 4,2).'-'.substr($target_date, 6,2)));
		} else {
			$target_date = date(strtotime($target_date));
		}

		$yesterday = date('Y-m-d',strtotime("-1 day",$target_date));
		$today     = date('Y-m-d',$target_date);
		$tomorrow  = date('Y-m-d',strtotime("+1 day",$target_date));

		$this->data['yesterday'] = $yesterday;
		$this->data['today']     = $today;
		$this->data['tomorrow']  = $tomorrow;
		
		$this->load->model('unse/Star_model', 'star');
//		$this->data['yesterday_artist_list'] = $this->star->select_artist_simple_list($yesterday);
		$this->data['today_artist_list'] = $this->star->select_artist_simple_list($today);
//		$this->data['tomorrow_artist_list'] = $this->star->select_artist_simple_list($tomorrow);

		//----------------------------------
		// 검색 시 처리할 내용
		//----------------------------------
		$search_keyword = $this->input->post('search_keyword', TRUE);
		if (!empty($search_keyword)) {
			$this->data['search_keyword'] = $search_keyword;
			$this->load->model('unse/Star_model', 'star');
			$this->data['artist_list'] = $this->star->select_artist_search_list($search_keyword);
		} else {
			$this->data['search_keyword'] = '';
		}

		$this->load->view('unse/star_todaybirth_main_v', $this->data);
	}
	
	/*******************************************************************
	 * 스타운세 : 오늘 태어난 스타 검색 결과
	 *----------------------------------------------------------------------------------------
	 * 스타 운세는 스타 검색이 들어가기때문에 좀 특수하다.
	 *****************************************************************************************/
	function star_todaybirth_search() {
		log_message('debug', "@@@@ Unse::star_todaybirth_search()");
		
		$search_keyword = $this->input->post('search_keyword', TRUE);
		$this->data['search_keyword'] = $search_keyword;

		$this->load->model('unse/Star_model', 'star');
		$this->data['artist_list'] = $this->star->select_artist_search_list($search_keyword);

		$this->load->view('unse/star_todaybirth_search_v', $this->data);
	}
}

/* End of file unse.php */
/* Location: ./application/controllers/unse.php */